package foundation.test01_string;

/**
 * 对于长度为5位的一个01串，每一位都可能是0或1，一共有32种可能,请按从小到大的顺序输出这32种01串。
 */
public class Main {
    public static void main(String[] args) {
        int[] res = new int[] {0, 0, 0, 0, 0};
        for (int i = 0; i < 32; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print(res[j]);
            }
            System.out.println();
            // 给res做二进制加法
            sum_one(res);
        }
    }

    /**
     * 给res做二进制加法
     * @param res
     * @return
     */
    public static void sum_one(int[] res) {
        if (res[4] == 1) {
            // 找到从右到左第一个不是1
            int index = 4;
            while (index >= 0 && res[index] ==1) {
                res[index] = 0;
                index --;
            }
            if (index < 0) {
                return;
            }
            res[index] = 1;
        } else {
            res[4] = 1;
        }
    }
}
